<template>
	<view v-if="isLoad" class="login">
		<MpWeixin @success="onGetUserInfoSuccess"></MpWeixin>
	</view>
</template>

<script>
	import MpWeixin from '../components/mp-weixin'
	import SettingModel from '@/common/model/Setting'
	import storage from '@/utils/storage'


	export default {
		components: {
			MpWeixin
		},

		data() {
			return {
				// 数据加载完成 [防止在微信小程序端onLoad和view渲染同步进行]
				isLoad: false,
				// 是否显示微信小程序授权登录
				isMpWeixinAuth: false,
				// 是否存在第三方用户信息
				isParty: false,
				// 第三方用户信息数据
				partyData: {},
				pid: 0,
				username: "",
				type: 2,
				// 正在加载
				isLoading: false,
				// 倒计时
				times:0,
				// 登录账号
				user_name: '',
				// 真实姓名
				nick_name: '',
				pwd: '',
				safe_pwd: '',
				newType: this.pageType,
				newPid: this.pid,
				newUserName: this.username
			}
		},

		/**
		 * 生命周期函数--监听页面加载
		 */
		async onLoad(options) {
			console.log('login onLoad')
			const app = this
			app.pid = parseInt(options.pid) ? parseInt(options.pid) : 0
			app.type = parseInt(options.type) ? parseInt(options.type) : 1
			// 设置当前是否显示微信小程序授权登录
			await this.setShowUserInfo()
			// 数据加载完成
			this.isLoad = true
			console.log('isLoad', true)
		},

		methods: {

			/**
			 * 设置当前是否显示微信小程序授权登录
			 *  - 条件1: 只有微信小程序才显示获取用户信息按钮
			 *  - 条件2: 后台设置是否已开启该选项 [后台-客户端-注册设置]
			 */
			async setShowUserInfo() {
				console.log('setShowUserInfo start')
				const app = this
				// 判断当前客户端是微信小程序, 并且支持getUserProfile接口
				const isMpWeixin = app.$platform === 'MP-WEIXIN' && wx.canIUse('getUserProfile')

				// 获取后台设置
				// 优化建议: 可以将isCache改为true启用缓存

			},

			// 获取到用户信息的回调函数
			onGetUserInfoSuccess({
				oauth,
				code,
				userInfo
			}) {
				// 记录第三方用户信息数据
				this.partyData = {
					oauth,
					code,
					userInfo
				}
				// 显示注册页面
				this.onShowRegister()
				console.log('isLoad', this.partyData)
				this.submitLogin()
			},

			// 显示注册页面
			onShowRegister() {
				// 是否显示微信小程序授权登录
				this.isMpWeixinAuth = false
				// 已获取到了第三方用户信息
				this.isParty = true
			},
			// 确认登录
			submitLogin() {
				const app = this
				app.isLoading = true
				store.dispatch('LoginMpWx', {
						avatar: app.partyData.userInfo.avatarUrl,
						user_name: app.partyData.userInfo.nickName,
						code: app.partyData.userInfo.code
					})
					.then(result => {
						// 显示登录成功
						app.$toast(result.message)
						// 跳转回原页面
						setTimeout(() => {
							switch (app.newType) {
								case 1:
									uni.reLaunch({
										url: '/pages/login/index?pid=' + app.newPid + '&type=' + app
											.newType
									});
									break;
								case 2:
									uni.switchTab({
										url: '/pages/user/index'
									});
									break;
								case 3:
									uni.reLaunch({
										url: '/pages/login/index?pid=' + app.newPid + '&type=' + app
											.newType
									});
									break;
							}
						}, 2000)
					})
					.catch(err => {
						if (err.result.data.isBack) {
							// 跳转回原页面
							setTimeout(() => {
								app.onNavigateBack(1)
							}, 2000)
						}
					})
					.finally(() => app.isLoading = false)
			},

			/**
			 * 登录成功-跳转回原页面
			 */
			onNavigateBack(delta) {
				uni.navigateBack({
					delta: Number(delta || 1)
				})
			}
		}
	}
</script>

<style lang="scss" scoped>

</style>
